package com.uvnos4j.matilda.commons.dto;

import cn.hutool.core.lang.Console;
import lombok.Data;

/**
 * 分页查询参数封装
 *
 * @author Guo.wl
 */
@Data
public class PageParam {

    private int pageNum;

    private int pageSize;

    /**
     * 起始位置
     */
    private int pageStart;

    /**
     * 结束位置
     */
    private int pageEnd;

    private PageParam(int pageNum, int pageSize) {
        if (pageNum < 1) {
            pageNum = 1;
        }
        if (pageSize < 0) {
            pageSize = 10;
        }
        this.pageNum = pageNum;
        this.pageSize = pageSize;
        // 10 * 0 = 0
        this.pageStart = (pageSize * (pageNum - 1));
        // 10
        this.pageEnd = pageSize * pageNum;
    }

    /**
     * 通过页码和每页条数构建分页参数
     *
     * @param pageNum  页码
     * @param pageSize 每页条数
     * @return 分页参数对象
     */
    public static PageParam buildByNumAndSize(int pageNum, int pageSize) {
        PageParam pageParam = new PageParam(pageNum, pageSize);
        Console.log("分页信息：{}。", pageParam);
        return pageParam;
    }

    /**
     * 通过开始记录数和每页条数构建分页参数
     *
     * @param pageStart 开始记录数
     * @param pageLimit 每页条数
     * @return 分页参数对象
     */
    public static PageParam buildByStartAndLimit(int pageStart, int pageLimit) {
        int pageNum = pageStart / pageLimit + 1;
        PageParam pageParam = new PageParam(pageNum, pageLimit);
        Console.log("分页信息：{}。", pageParam);
        return pageParam;
    }

}